package com.qdlc.p2p.dal.dto;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import com.google.gson.annotations.Expose;
import com.qdlc.p2p.common.constant.Global;
import com.qdlc.p2p.common.util.StringUtil;

/**
 * user 实体类
 *
 * @author liya
 * @version 1.1.0.0
 */
@Entity
@Table(name = Global.DB_PREFIX + "user")
public class User implements Serializable {

	private static final long serialVersionUID = 6215970391306753379L;

	/** 用户ID */
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "user_id")
    @Expose
    private long userId;

    /** 用户名 */
    @Expose
    private String userName;

    /** 用户密码 */
    @Expose
    private String pwd;
    
    /** 手机号码 */
    @Expose
    private String mobilePhone;
    
    /** 电子邮件 */
    @Expose
    private String email;

    /** 交易密码 */
    @Expose
    private String payPwd;

    /** 真实姓名 */
    @Expose
    private String realName;
    
    /** 证件号码 */
    @Expose
    private String cardId;
    
    /** 第三方交易账户ID */
    @Expose
    private String tppUserCustId;
    
    /** 添加时间 */
    @Expose
    private Date addTime;

    public User() {
        super();
    }

    public User(long userId) {
        super();
        this.userId = userId;
    }

    /**
     * 获取证件号码
     *
     * @return 证件号码
     */
    public String getCardId() {
        return cardId;
    }

    /**
     * 获取隐藏用户名
     *
     * @return 隐藏用户名
     */
    public String getHideUserName() {
        return getUserName().charAt(0) + "***"  + getUserName().charAt(getUserName().length() - 1);
    }

    /**
     * 获取证件号码
     *
     * @return 证件号码
     */
    public String getHideCardId() {
        if (StringUtil.isNotBlank(cardId) && cardId.length() == 18) {
            return cardId.substring(0, 6) + "********"  + cardId.substring(14, 18);
        }
        return cardId;
    }

    /**
     * 设置证件号码
     *
     * @param cardId 要设置的证件号码
     */
    public void setCardId(String cardId) {
        this.cardId = cardId;
    }
 
    /**
     * 获取(隐藏一定位数的)电子邮件
     *
     * @return 电子邮件
     */
    public String getHideEmail() {
        if (StringUtil.isNotBlank(email)) {
            return email.substring(0, 1) + "****" + email.substring(email.indexOf("@") - 1, email.length());
        }
        return "";
    }

    /**
     * 获取(隐藏一定位数的)手机号码
     *
     * @return 手机号码
     */
    public String getHideMobilePhone() {
        if (StringUtil.isNotBlank(mobilePhone) && mobilePhone.length() == 11) {
            return mobilePhone.substring(0, 3) + "*****" + mobilePhone.substring(8, 11);
        }
        return mobilePhone;
    }

    /**
     * 获取用户ID
     *
     * @return 用户ID
     */
    public long getUserId() {
        return userId;
    }

    /**
     * 设置用户ID
     *
     * @param userId
     */
    public void setUserId(long userId) {
        this.userId = userId;
    }

    /**
     * 获取用户名
     *
     * @return 用户名
     */
    public String getUserName() {
        return userName;
    }

    /**
     * 设置用户名
     *
     * @param userName
     */
    public void setUserName(String userName) {
        this.userName = userName;
    }

    /**
     * 获取用户登录密码
     *
     * @return 登录密码
     */
    public String getPwd() {
        return pwd;
    }

    /**
     * 设置登录密码
     *
     * @param pwd
     */
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    /**
     * 获取交易密码
     *
     * @return 交易密码
     */
    public String getPayPwd() {
        return payPwd;
    }

    /**
     * 设置交易密码
     *
     * @param payPwd
     */
    public void setPayPwd(String payPwd) {
        this.payPwd = payPwd;
    }

    /**
     * 获取用户真实姓名
     *
     * @return 真实姓名
     */
    public String getRealName() {
        return realName;
    }

    /**
     * 设置用户真实姓名
     *
     * @param realName
     */
    public void setRealName(String realName) {
        this.realName = realName;
    }

    /**
     * 获取用户邮箱
     *
     * @return 用户邮箱
     */
    public String getEmail() {
        return email;
    }

    /**
     * 设置用户邮箱
     *
     * @param email
     */
    public void setEmail(String email) {
        this.email = email;
    }

    /**
     * 获取用户手机号码
     *
     * @return 手机号码
     */
    public String getMobilePhone() {
        return mobilePhone;
    }

    /**
     * 设置用户手机号码
     *
     * @param mobilePhone
     */
    public void setMobilePhone(String mobilePhone) {
        this.mobilePhone = mobilePhone;
    }

    public String getTppUserCustId() {
		return tppUserCustId;
	}

	public void setTppUserCustId(String tppUserCustId) {
		this.tppUserCustId = tppUserCustId;
	}

	/**
     * 获取用户注册时间
     *
     * @return 注册时间
     */
    public Date getAddTime() {
        return addTime;
    }

    /**
     * 设置用户注册时间
     *
     * @param addTime
     */
    public void setAddTime(Date addTime) {
        this.addTime = addTime;
    }


    @Override
    public String toString() {
        StringBuffer buffer = new StringBuffer(50);
        buffer.append("{userId:").append(userId).append(",")
                .append("userName:").append(userName).append("}");
        return buffer.toString();
    }

}
